# 1 "st.h"
# 1 "<built-in>"
# 1 "<command line>"
# 1 "st.h"
# 9 "st.h"
typedef unsigned long st_data_t;


typedef struct st_table st_table;

struct st_hash_type {
    int (*compare)();
    int (*hash)();
};

struct st_table {
    struct st_hash_type *type;
    int num_bins;
    int num_entries;
    struct st_table_entry **bins;
};



enum st_retval {ST_CONTINUE, ST_STOP, ST_DELETE, ST_CHECK};
# 41 "st.h"
st_table *st_init_table (struct st_hash_type *);
st_table *st_init_table_with_size (struct st_hash_type *, int);
st_table *st_init_numtable (void);
st_table *st_init_numtable_with_size (int);
st_table *st_init_strtable (void);
st_table *st_init_strtable_with_size (int);
int st_delete (st_table *, st_data_t *, st_data_t *);
int st_delete_safe (st_table *, st_data_t *, st_data_t *, st_data_t);
int st_insert (st_table *, st_data_t, st_data_t);
int st_lookup (st_table *, st_data_t, st_data_t *);
int st_foreach (st_table *, int (*)(), st_data_t);
void st_add_direct (st_table *, st_data_t, st_data_t);
void st_free_table (st_table *);
void st_cleanup_safe (st_table *, st_data_t);
st_table *st_copy (st_table *);







int st_strhash();
